// import com.alibaba.druid.sql.ast.statement.SQLWithSubqueryClause.Entry;
// import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
#pragma once
#include "../../../../ast/statement/SQLWithSubqueryClause_Entry.h"
#include "../OracleSQLObject.h"

class OracleWithSubqueryEntry : virtual public SQLWithSubqueryClause_Entry, virtual public OracleSQLObject
{
public:
  SearchClause_ptr searchClause;
  CycleClause_ptr cycleClause;

  SHAREDOBJECT(OracleWithSubqueryEntry);
  CycleClause_ptr getCycleClause();

  void setCycleClause(CycleClause_ptr cycleClause);

  SearchClause_ptr getSearchClause();

  void setSearchClause(SearchClause_ptr searchClause);

  // @Override
  void accept0(OracleASTVisitor_ptr visitor);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  void cloneTo(OracleWithSubqueryEntry_ptr x);

  SQLObject_ptr clone();
};
